package secondStage.part3.Set;

/**
 * @ClassName: [HashValueDemo]
 * @Description: 哈希值
 * @Author: [黄劲松]
 * @CreateDate: [2021-04-03]
 * @Version: [v1.0]
 */
/*
3.2哈希值
哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

Object类中有一个方法可以获取对象的哈希值
public int hashCode():返回对象的哈希码值

对象的哈希值特点
    同一个对象多次调用hashCode()方法返回的哈希值是相同的
    默认情况下，不同对象的哈希值是不同的。而重写hashCode()方法，可以实现让不同对象的哈希值相同
*/
public class HashValueDemo {
    public static void main(String[] args) {
        //创建学生对象
        Student s1 = new Student("临沂", 12);
        //同一对象多次调用hashCode()方法返回的哈希值相同
        System.out.println(s1.hashCode());//1163157884
        System.out.println(s1.hashCode());//1163157884
        System.out.println("----------");
        //默认情况下，不同对象调用hashCode()方法返回的哈希值不相同
        //通过方法重写之后，可以实现不同对象的哈希值相同
        Student s2 = new Student("淄博", 23);//1956725890
        System.out.println(s2.hashCode());
        System.out.println("--------");
        System.out.println("hello".hashCode());//99162322
        System.out.println("world".hashCode());//113318802
        System.out.println("java".hashCode());//3254818
        System.out.println("hello".hashCode());//99162322
        System.out.println("----------");
        //String重写了hashCode()方法
        System.out.println("重地".hashCode());
        System.out.println("通话".hashCode());
    }
}
